package ru.products.common.classes;

import ru.products.common.entities.BaseParams;
import ru.products.common.interfaces.CardBehaviour;


/**
 * Класс для кредитной карты
 */
public class CreditCard extends BaseParams implements CardBehaviour {

    private Float rate;

    public Double checkBalance() {
        return balance;
    }

    /**
     * В следующих методах по взаимодействию с балансом возможно стоит добавить проверки на
     * неотрицательные значения у параметров 'income' и 'outcome'
     */
    public Double refill(Double income) {
        balance += income;
        return balance;
    }

    public Double debiting(Double outcome) {
        balance -= outcome;
        return balance;
    }

    /**
     * Метод 'запрос задолженности' возвращает баланс, если он отрицательный. Иначе возвращает 0
     */
    public Double checkDept() {
        //Не понятно что должен возвращать этот метод, поскольку нет параметра "задолженности".
        if (checkBalance()<0){
            return checkBalance();
        } else
        return 0.0;
    }

    /**
     * конструктор для кредитной карты
     */
    public CreditCard(String name, Double balance, String currency, Float rate) {
        super(name, balance, currency);
        this.rate = rate;
    }

    /**
     * поставил стандартный геттер. Не уверен, что этому параметру нужен сеттер. Возможно стоит перевести параметра в final
     */
    public Float getRate() {
        return rate;
    }
}
